// pkg_user/pages/login/login.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    username: '',
    password: '',
    showPassword: false,
    loading: false,
    canLogin: false
  },

  /**
   * 账号输入事件
   */
  onUsernameInput(e) {
    this.setData({
      username: e.detail.value
    });
    this.checkCanLogin();
  },

  /**
   * 密码输入事件
   */
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    });
    this.checkCanLogin();
  },

  /**
   * 切换密码显示/隐藏
   */
  togglePassword() {
    this.setData({
      showPassword: !this.data.showPassword
    });
  },

  /**
   * 检查是否可以登录
   */
  checkCanLogin() {
    const { username, password } = this.data;
    const canLogin = username.trim().length > 0 && password.trim().length >= 6;
    this.setData({
      canLogin
    });
  },

  /**
   * 登录处理
   */
  async onLogin() {
    console.log('登录按钮被点击');
    const { username, password, loading } = this.data;
    
    console.log('当前状态:', { username, password: password ? '***' : '', loading, canLogin: this.data.canLogin });
    
    if (loading) {
      console.log('正在登录中，忽略重复点击');
      return;
    }
    
    if (!username.trim()) {
      wx.showToast({
        title: '请输入账号',
        icon: 'none'
      });
      return;
    }

    if (password.trim().length < 6) {
      wx.showToast({
        title: '密码至少6位',
        icon: 'none'
      });
      return;
    }

    this.setData({ loading: true });

    try {
      console.log('开始调用云函数...');
      
      // 确保云开发已初始化
      if (!wx.cloud) {
        throw new Error('云开发未初始化，请检查基础库版本');
      }

      // 调用云函数进行登录验证
      const result = await wx.cloud.callFunction({
        name: 'quickstartFunctions',
        data: {
          type: 'login',
          username: username.trim(),
          password: password.trim()
        }
      });

      console.log('登录结果:', result);

      // 处理不同格式的返回结果
      let loginResult = result;
      if (result.result) {
        loginResult = result.result;
      }

      if (loginResult && loginResult.success) {
        // 登录成功，保存用户信息
        const userInfo = loginResult.data;
        wx.setStorageSync('userInfo', userInfo);
        wx.setStorageSync('isLogin', true);

        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });

        // 延迟跳转，让用户看到成功提示
        setTimeout(() => {
          const pages = getCurrentPages();
          if (pages.length > 1) {
            // 如果有上一页，返回上一页
            wx.navigateBack();
          } else {
            // 否则跳转到我的页面
            wx.redirectTo({
              url: '/pkg_user/pages/profile/profile'
            });
          }
        }, 1500);
      } else {
        const errorMsg = (loginResult && loginResult.message) || 
                        (result.errMsg) || 
                        '登录失败，请检查账号密码';
        console.error('登录失败:', errorMsg);
        wx.showToast({
          title: errorMsg,
          icon: 'none',
          duration: 2000
        });
      }
    } catch (error) {
      console.error('登录失败:', error);
      let errorMsg = '登录失败，请稍后重试';
      
      if (error.errMsg) {
        if (error.errMsg.includes('cloud function not found')) {
          errorMsg = '云函数未找到，请检查云函数是否已部署';
        } else if (error.errMsg.includes('network')) {
          errorMsg = '网络错误，请检查网络连接';
        } else {
          errorMsg = error.errMsg;
        }
      } else if (error.message) {
        errorMsg = error.message;
      }
      
      wx.showToast({
        title: errorMsg,
        icon: 'none',
        duration: 2000
      });
    } finally {
      this.setData({ loading: false });
    }
  },

  /**
   * 忘记密码
   */
  onForgotPassword() {
    wx.showModal({
      title: '忘记密码',
      content: '请联系管理员重置密码',
      showCancel: false
    });
  },

  /**
   * 注册
   */
  onRegister() {
    wx.navigateTo({
      url: '/pkg_user/pages/register/register'
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 检查是否已登录
    const isLogin = wx.getStorageSync('isLogin');
    if (isLogin) {
      wx.showModal({
        title: '提示',
        content: '您已登录，是否重新登录？',
        success: (res) => {
          if (!res.confirm) {
            wx.navigateBack();
          }
        }
      });
    }
  }
});
